﻿namespace Homework18
{
    /// <summary>
    /// 汉诺塔问题
    /// </summary>
    internal class Program
    {
        //确定层数
        private const int Layer = 3;
        static void Main(string[] args)
        {
            int n = Layer;

            //使用递归函数解决问题
            Move(n, 'A', 'B', 'C');
        }

        //构造递归函数
        static void Move(int n, char A,char B, char C)
        {
            //如果只有一个圆盘，直接从A柱移动到C柱
            if (n == 1)
            {
                Console.WriteLine($"move {n} from {A} to {C}");
            }
            else
            {
                //先将n-1个圆盘从A柱移动到B柱
                Move(n-1, A, C, B);

                //再将第n个圆盘从A柱移动到C柱
                Console.WriteLine($"move {n} from {A} to {C}");

                //最后将n-1个圆盘从B柱移动到C柱
                Move(n-1, B, A, C);
            }
        }
    }
}
